Алгоритм SPEED
SPEED | |
---|---|
Создатель | Чжэн Юлян |
Создан | 1997 год |
Опубликован | 1997 год |
Размер ключа | 48-256 бит (кратное 16) |
Размер блока | 64, 128 или 256 бит |
Число раундов | ≥ 32 (кратное 4) |
Тип | Сеть Фейстеля |
SPEED (Secure Package for Encrypting Electronic Data) — это алгоритм блочного симметричного шифрования, разработанный австралийским криптографом Чжэн Юляном[англ.], работавшим в университете Монаша. Основные параметры: раунд, длина блока и длина ключа являются переменными, в этом алгоритм похож на более известный аналог RC5.
Описание
[править | править код]Шифрование по алгоритму SPEED состоит из двух этапов. Процедура расширения ключа и непосредственно шифрование. Для дешифрования выполняется сначала процедура расширения ключа, а затем операции, обратные процедуре шифрования.
Параметры
[править | править код]Так как алгоритм SPEED имеет переменные параметры, то для спецификации алгоритма с конкретными параметрами принято указывать (W,L,R)[1], где:
W — это размер блока шифруемых данных, который может принимать значения: 64, 128 и 256 бит соответственно.
L — это размер ключа, который принимает значение L диапазоне от 48 до 256 бит, которое кратно 16.
R — это количество раундов преобразований. Количество преобразований при этом должно быть не менее 32 и кратно 4.
Шифрование
[править | править код]SPEED, применяя ключ К длиной L бит, преобразует открытый текст M из W бит в зашифрованный С той же длины.
Криптографический ключ K, представляющий собой строку из L бит, сначала расширяется с помощью функции планирования ключей на четыре ключа K1, K2, K3 и К4. Каждый из этих ключей состоит из R цикловых ключей, где указано количество раундов в каждом проходе.
Открытый текст M представляется как 8 строк, бит каждый. Эти 8 строк обрабатываются в фазах P1, P2, P3 и P4 последовательно. Каждая фаза называется проходом и включает в себя ключи К1, К2, К3, К4 соответственно . На выходе мы получим зашифрованный текст С из открытого М.
Все 4 фазы внутреннего прохода P1, P2, P3, P4 работают одинаково, хотя в каждом проходе используется отдельный подключ К1, К2, К3, К4, а также разные нелинейные функции для побитовых логических операций. Ниже на рисунке представлены эти функции[1]:
Фаза 1(P1): F1(X6,X5,X4,X3,X2,X1,X0) = X6X3X5X1X4X2X1X0X0
Фаза 2(P2): F2(X6,X5,X4,X3,X2,X1,X0) = X6X4X0X4X3X0X5X2X4X3X4X1X3X0X1
Фаза 3(P3): F3(X6,X5,X4,X3,X2,X1,X0) = X5X4X0X6X4X5X2X3X0X1X0X3
Фаза 4(P4): F4(X6,X5,X4,X3,X2,X1,X0) = X6X4X2X0X6X5X4X3X3X2X1X0X2
Расширение ключа
[править | править код]Ключ шифрования/дешифрования K для SPEED представляет собой двоичную строку из L бит, где L является целым числом от 48 до 256 и делится на 16. Функция планирования ключей состоит в том, чтобы «расширять» ключ K на R фрагментов циклового ключа, необходимых для R раундов обработки.
Порядок расширения ключа
[править | править код]Основной блок данных в планировании ключей — это двухбайтовые данные. Таким образом, байтный ключ сначала переводится во внутренние двухбайтовые блоки данных kb0,kb1, …, kb-1.
Также в процессе расширения ключа принимают переменные S0, S1, S2. Их размер составляет также 2 байта. Их начальное значение равняется константам Q0, Q1, Q2 соответственно, значение которых прямо зависит от размера ключа шифрования. Значения Q0, Q1, Q2 получают из констант дробной части числа . Первые три константы из дробной части используются для случая L = 48, следующие три для L = 64 и так далее. Таким образом, в общей сложности 42 константы требуются для 14 различных длин ключей. Эти константы показаны ниже в шестнадцатеричной форме.
DF7B | D629 | E9DB | 362F | 5DO0 | F20F | C3D1 |
IFD2 | 589B | 4312 | 91EB | 718E | BF2A | IETD |
B257 | 77A6 | 1654 | 6B2A | 0D98 | A9D3 | 668F |
19BE | F855 | 6D98 | 022D | E4E2 | D017 | EA2F |
7572 | C3B5 | 1086 | 480C | 3AA6 | 9CAO | 98F7 |
DOE4 | 253C | C901 | 55F3 | 9BF4 | F659 | D76C |
Алгоритм планирования ключей расширяет наш массив до kblast-1, где last = при W = 64, last = R при W = 128, last = 2R при W = 256.
Дальнейший процесс расширения можно представить в виде нескольких шагов[1]:
- На переменные S0, S1, S2 действует функция G, которая представляется собой побитовую операцию G(S2, S1, S0) = S2,S1S1,S0S0,S2 (Здесь SiSj побитовое И, а SiSj битовый XOR). Мы получаем T = G (S0,S1, S2)
- Полученный результат поворачивает вправо на 5 бит.
- Далее T = T + S2 + kb[j] (mod 216), где i=j (mod ).
- Происходит сдвиг переменных S0, S1, S2 и новое значение T становится значением переменной S0: kb[i]=T S2=S1 S1=S0 S0=T
- Этот шаг переводит last двухбайтовые данные kb0, kb1, …, kblast-1 в R цикловых ключей, каждый из которых состоит из бит. Перевод поддерживает порядок двухбайтовых данных.
Полезные свойства
[править | править код]Побитовая нелинейная логическая операция используется в каждом раунде. Чтобы усилить шифр против дифференциальной атаки на выходе операции применяется циклический сдвиг, зависящий от данных. Использование максимально нелинейной булевой функции в побитовой булевой операции помогло бы предотвратить линейную атаку[2].
Дешифрование
[править | править код]В качестве шифра с закрытым ключом SPEED использует один и тот же ключ как для шифрования, так и для дешифрования. Чтобы расшифровать зашифрованный текст C с помощью ключа K, происходит весь процесс работы алгоритма в обратном порядке, за исключением планирования ключей, который остается неизменным. Другими словами внутренние операции каждого Pi, где i = 1, 2, 3, 4, будут проводиться в обратном порядке[1].
Преимущества и недостатки
[править | править код]- Простой и компактный в реализации: при реализации алгоритма на языке программирования C его объём занимает всего около 3 килобайт.
- Алгоритм подвержен различным криптоатакам: дифференциальный криптоанализ и атака на связанные ключи.
Повышения криптоустойчивости можно добиться, увеличивая количество раундов, но это негативно влияет на производительность. Быстродействие алгоритма значительно падает, и становится в несколько раз меньше быстродействия аналогичного криптоустойчивого алгоритма RC5[3].
Примечания
[править | править код]- ↑ 1 2 3 4 First International Conference, FC '97, Anguilla, British West Indies, February 24-28, 1997. Proceedings p.71-89
- ↑ SEBERRY,J., ZHANG,X. M., AND ZHENG,Y. Nonlinearity and propagation characteristics of balanced boolean functions. Information and Computation 119, 1 (1995)
- ↑ Cryptanalysis of SPEED by Chris Hall , John Kelsey, Vincent Rijmen, Bruce Schneier, David Wagner
Ссылки
[править | править код]- First International Conference, FC '97, Anguilla, British West Indies, February 24-28, 1997. Proceedings p.71-89
- Cryptanalysis of SPEED by Chris Hall , John Kelsey , Vincent Rijmen , Bruce Schneier , David Wagner
- SEBERRY,J., ZHANG,X. M., AND ZHENG,Y. Nonlinearity and propagation characteristics of balanced boolean functions. Information and Computation 119, 1 (1995).
На эту статью не ссылаются другие статьи Википедии. |